package jb01;

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

//运算符演示
public class OperDemo {
    public static void main(String[] args) {
        //ctrl+shift+/
        /*
         * 1.算术运算符:+,-,*,/,%,++,--
         * 1.1)%取余:余数为零,则为整数
         * 1.2)++/--:自增1,自减1,可在变量之前,也可在变量之后
         * 1.2.1)单独使用时 ,在前在后都一样
         * 1.2.2)被使用时,在前在后不一样
         *       a++的值为a;a--的值为a
         *       ++a的值为a+1,--a的值为a-1
         * */
       /* int a=5,b=5;
        System.out.println(a++);
        System.out.println(++b);
        int c=a--;//1)将a的值5赋给c 2)a自减1变为4
        int d=--b;//1)将b的值5自减1变为4 2)将4赋给d
        System.out.println(c);
        System.out.println(d);
        int aa=5,bb=5;
        int cc=aa++;//1)将aa的值5赋给cc 2)aa自加1变为6
        int dd=++bb;//1)将bb的值5自加1变为6 2)将6赋给dd
        System.out.println(cc);
        System.out.println(dd);
        System.out.println(aa);
        //取余
        System.out.println(5%2);//1
        System.out.println(8%2);//0,取余为零 则为整数
        System.out.println(2%8);//2*/

        //ctrl+shift+/
        //2 关系运算
        /*
        * 1)>大于,<小于
        * >=大于等于,<=小于等于
        * ==等于, !=不等于
        * 2)关系运算的结果为boolean型
        * 关系成立则为true,关系不成立则为false
        * */
/*        int ra=5,rb=10,rc=5;
        boolean rb1=ra>rb;//关系运算的结果为boolean型
        System.out.println(rb1);
        System.out.println(ra>=rc);
        System.out.println(ra+rc>=rb);//ra+rc,ra+rc>=rb
        System.out.println(ra%2==0);//false,ra%2,ra%2==0
        System.out.println(ra++>5);//ra>5 ;ra=ra+1
        boolean rd=ra++>5;
        System.out.println(rd);
        System.out.println(++ra>5);//1)ra=ra+1,2)ra>5*/
        //逻辑运算
        /* 1)&&:短路与(并且)，两边都为真则为真，见false则false
                 ---第1个条件为false时，则发生短路(后面的不执行了)
              ||:短路或(或者)，有真则为真，见true则true
                 ---第1个条件为true时，则发生短路(后面的不执行了)
               !:逻辑非(取反)，非真则假，非假则真
            2)逻辑运算是建立在关系运算的基础之上的
              逻辑运算的结果也是boolean型*/

/*        int la=5,lb=10,lc=5;
                    //假    则 右边不计算
        //短路与 可以理解为 乘
        boolean lb1=lb>=la && lb<lc; //1 && 0=0 false
        System.out.println(lb1);
        System.out.println(lb<=lc && lb>la);//10<=5 false->false
        //短路或     真     则右边不计算
        //短路或 可以理解为 加
        boolean lb4=la<lb || lc++>2; // 1->true
        System.out.println(lb>=la || lb<lc);// true
        System.out.println(lb4);*/

        //赋值运算
        /*1)简单赋值运算符: =
        2)扩展赋值运算符: +=,-=,/=,%=
        注意: 扩展赋值自带强制转换功能
        * */
        //强制转换
/*        short aa=5,dd=6;
        int bb=10,cc=10;
        //当大的数据类型 用小的数据类型 接收时 需要强制转换
        aa=(short)(bb+cc);
        //当小的数据类 用大的数据类型接收时 不用强制转换
        //int short
        bb=aa+dd;
        //赋值运算 与 扩展赋值运算
        int a=5;
        a+=10;// 相当于a=(int)(a+10)
        System.out.println(a);//15
        a*=2;//相当于a=(int)(a*2)
        System.out.println(a);
        a/=6;//想当于a=(int)(a/6)
        System.out.println(a);
        //小面试题
        short s=5;
        *//*s=s+5;//short=short+int
        s=(short)(s+5);*//*
        s+=5;//s=(short)(s+5)*/

        //字符串连接运算符
        /*1.若两边为数字,则做加法运算
        2.若两边出现了字符串,则做字符串连接
        3.任何类型的数据与字符串相连,结果一定变为字符串类型
        * */
/*        System.out.println(10+10+20);//40
        System.out.println("10"+"10"+"20");//101020
        System.out.println(10+""+10);//1010
        //选中一行 ,ctrl+d
        System.out.println(10+20+""+10);//3010

        int age=38;
        System.out.println("age="+age);//age=38
        System.out.println("my age is "+age+"!");//my age is 38!*/
        //三目运算符
        /*
        * 1)语法:
        *       boolean?数1:数2
        * 2)执行过程:
        *   若boolean的值为真,则表达式的值为数1;
        * 若boolean的值为假, 则表达式的值为数2;
        * */
        int num=5;
        int flag =num>0?1:-1;
        System.out.println(flag);//flag=1

        int a=5,b=8;
        int max=a>b?a:b;
        System.out.println("max="+max);//max=8;





    }


}
